/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package socket.dataserver.server;

import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java2jdbc.dao.ControladorAbstracto;
import java2jdbc.manager.ManagerCliente;
import java2jdbc.manager.ManagerProducto;

/**
 *
 * @author gabrielbran
 */
public class DataServer extends Thread {

    Socket client = null;
    ServerSocket server = null;
    ObjectOutputStream out = null;
    InputStream in = null;
    ControladorAbstracto ca;
    String comando = null;
    List elementos = new ArrayList();

    public DataServer(Socket s) {
        try {
            this.client = s;
        } catch (Exception e) {
            System.out.println("Ha ocurrido el siguiente error al iniciar " + e.getMessage());
        }
    }

    public DataServer() {
        try {
            server = new ServerSocket(1500);
            start();
        } catch (Exception e) {
            System.out.println("Ha ocurrido el siguiente error al iniciar: " + e.getMessage());
        }
    }

    @Override
    public void run() {

        try {
            while (true) {
                client = server.accept();
                System.out.println("Aceptando conexión");
                in = client.getInputStream();
                Scanner sc = new Scanner(in);
                comando = sc.nextLine();

                if (comando.toLowerCase().equals("cliente")) {
                    elementos = new ManagerCliente().getClientes();
                } else if (comando.toLowerCase().equals("producto")) {
                    elementos = new ManagerProducto().getProductos();
                }
                out = new ObjectOutputStream(client.getOutputStream());
                System.out.println("Output Stream recibido");
                out.writeObject(elementos);
                out.close();
                System.out.println("Objeto enviado al cliente");
            }

        } catch (Exception e) {
            System.out.println("Ha ocurrido el siguiente error: " + e.getMessage());
        }
    }

    public static void main(String args[]) {
        try {
            new DataServer();
        } catch (Exception e) {
            System.out.println("Ha ocurrido el siguiente error: " + e.getMessage());
        }
    }
}
